package programmierung.aufgabe2;

import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.Vector;

public class KundeUtil {
	
	public KundeUtil() {
	}
	
	public static List <List<Kunde>>getDuplikate (List<Kunde> kunden ) {
		List<List<Kunde>> tempLList = new Vector<List<Kunde>>();
		List<Kunde> tempKList;
		
		for(int i = 0; i < kunden.size(); i++) {
			tempKList = new Vector<Kunde>();
			for(int j = i + 1; j < kunden.size(); j++) {
				if(kunden.get(i) == kunden.get(j)) {
					tempKList.add(kunden.get(i));
					tempKList.add(kunden.get(j));
				}
			}
			if(tempKList.size() > 0) {
				tempLList.add(tempKList);
			}
		}
		
		return tempLList;
	}
	
	public static List <List<Kunde>>getEqualsKunden(List<Kunde> kunden ) {
		List<List<Kunde>> tempLList = new Vector<List<Kunde>>();
		List<Kunde> tempKList;
		
		for(int i = 0; i < kunden.size(); i++) {
			tempKList = new Vector<Kunde>();
			for(int j = i + 1; j < kunden.size(); j++) {
				if(kunden.get(i).equals(kunden.get(j))) {
					tempKList.add(kunden.get(i));
					tempKList.add(kunden.get(j));
				}
			}
			if(tempKList.size() > 0) {
				tempLList.add(tempKList);
			}
		}
		
		return tempLList;
	}
	
	public static List<Kunde>mitGeburtstagAm(Date gebu , List<Kunde> kunden) {
		List<Kunde> tempKList = new Vector<Kunde>();
		
		for(int i = 0; i < kunden.size(); i++) {
			if(gebu.compareTo(kunden.get(i).getGeburtstag()) == 0) {
				tempKList.add(kunden.get(i));
			}
		}
		
		return tempKList;
	}
	
	public static List<Kunde>alleVerschieden(List<Kunde> kunden) {
		List<Kunde> tempKList = new Vector<Kunde>();

		for(int i = 0; i < kunden.size(); i++) {
			if(Collections.frequency(tempKList, kunden.get(i)) == 1) {
				tempKList.add(kunden.get(i));
			}
		}
		return tempKList;
	}
	
	public static List<Kunde>nachGeburtstagSortiert(List<Kunde> kunden) {
		List<Kunde> tempKList = kunden;
		
		Collections.sort(tempKList, new Comparator<Kunde>() {

			@Override
			public int compare(Kunde o1, Kunde o2) {
				if(o1.getGeburtstag().before(o2.getGeburtstag())) {
					return -1;
				} else if(o1.getGeburtstag().after(o2.getGeburtstag())) {
					return 1;
				} else {
					return 0;
				}
			}
			
		});
		
		return tempKList;
	}

}
